package model

import (
	"gin-worked/app/common/model"
	"gin-worked/dao"
)

type Menu struct {
	Id         int    `json:"id"`
	Name       string `gorm:"column(name)" json:"name"`
	Url        string `gorm:"column(url)" json:"url"`
	Sort       int    `gorm:"column(sort)" json:"sort"`
	Status     int    `gorm:"column(status)" json:"status"`
	ParentId   int    `gorm:"column(parent_id)" json:"parent_id"`
	Icon       string `gorm:"column(icon)" json:"icon"`
	IsMenu     string `gorm:"column(is_menu)" json:"is_menu"`
	WebUrl     string `gorm:"column(web_url)" json:"web_url"`
	DeleteTime int    `gorm:"column(delete_time)" json:"delete_time"`
	CreateTime string `gorm:"column(create_time)" json:"create_time"`
	UpdateTime string `gorm:"column(update_time)" json:"update_time"`
}

// MenuAdd 添加管理员信息
func MenuAdd(data *Menu) (int, error) {
	err := dao.Db.Create(&data).Error
	return data.Id, err
}

// MenuListAll SystemList 获取用户列表
func MenuListAll(data []interface{}, field []string, order string) ([]Menu, error) {
	var menu []Menu
	db, _ := model.BuildWhere(dao.Db, data)
	err := db.Select(field).Order(order).Find(&menu).Error
	return menu, err
}

func MenuTotal(data *Menu) int64 {
	var count int64
	dao.Db.Model(&System{}).Where(data).Count(&count)

	return count
}

func MenuEdit(data *Menu, content map[string]interface{}) error {
	err := dao.Db.Model(&data).Updates(content).Error
	return err
}

func MenuInfo(data *Menu, field []string) (Menu, error) {
	var menu Menu
	err := dao.Db.Select(field).Where(data).First(&menu).Error
	return menu, err
}
